# encoding: utf-8
import os

# files to un-archive
# Директория для распковки (папка)
unarchive = 'D:/test/files'
# worked directory
# рабочая директория
work_directory = 'D:/test'

# Если нет папки files
# os.path.exists() возвращает True, если существует такой путь
# os.path.exists("C:\GAMES") вернёт True, если папка GAMES есть на C:\ диске
# иначе же вернёт нам False - то есть такой папки нет!
if not os.path.exists(unarchive):
    # создаём её
    # os.mkdir() создаёт путь (папку) в нужном месте
    # os.mkdir("C:\GAMES") создаст нам GAMES на диске C
    os.mkdir(unarchive)

# че у нас там в директории то есть?
# os.listdir(argument) возвращает нам список [List] - набор элементов в папке argument
# [List] = ['file1 or Directory', 'file2 or Directory2', 'file3  or Directory3']
# одним словом, в list_files попадут файлы и подпапки основной папки, переданной в аргументе
list_files = os.listdir(work_directory)
#print list_files

# Выведи тип объекта, кторый возвращает нам os.listdir() метод
#print type(list_files)

def FileIs(node):
    # вернуть True логическое, если node файл, а не директория

    # os.path.isdir возвращает true, если путь - равен директории
    # к примеру: D:\games = true
    # к примеру: D:\games\file.zip = false

    # возвратить обратное значение от os.path.isdir()
    # то есть вернёт True если файл, и False, если директория
    return not os.path.isdir(work_directory + '/' + node)

# проходимся по списку =)
# списком for
for file_iterator in list_files:
    # при этом file_iterator - новая временная переменная, содержит
    # имя файла с его расширением, за один проход - один файл
    # и так оп всем файлам, file_iterator меняется на другое значение = имени файлу
    #print FileIs(file_iterator)

    # Если file_iterator ссылается на файл, а не на директорию
    # то выполнить действие
    if FileIs(file_iterator):
        #print ("Это файл: "+file_iterator)
        # Команды архиватору 7z будут выглядеть так:
        #print ("7z x "+work_directory + "/" + file_iterator + " -o"+ unarchive)

        # система, выполни команду 7z + набор аргументов
        # к примеру, 7z x file.zip -oC:\GAMES попросит 7z извлечь все файлы и папки из архива file.zip
        # в директорию C:\GAMES (-o аргмент для 7z.exe)
        os.system("7z x "+work_directory + "/" + file_iterator + " -o"+ unarchive)

# так вызываются процессы в Unix
#subprocess.Popen("7z x D:/test/ProcessMonitor.zip -oD:/test/files") on Linux
# Так в Windows
# result = os.system("7z x D:/test/ProcessMonitor.zip -oD:/test/files") on Windows